// 地图相关API服务
const API_BASE_URL = ''  // 修改为空字符串，因为我们将在请求中使用完整路径

// 获取CSRF Token
function getCSRFToken() {
  return document.cookie.split(';').find(cookie => cookie.trim().startsWith('csrftoken='))
    ?.split('=')[1]
}

// 通用请求函数
async function request(url, options = {}) {
  const defaultOptions = {
    headers: {
      'Content-Type': 'application/json',
      'X-CSRFToken': getCSRFToken()
    },
    credentials: 'include',
    ...options
  }

  const response = await fetch(`${API_BASE_URL}${url}`, defaultOptions)
  
  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`)
  }
  
  return await response.json()
}

// 获取所有活动位置
export async function getActivities() {
  try {
    const result = await request('/api/tencent-map/api/activities/')  // 使用新的路径
    if (result.success) {
      return result.data
    } else {
      throw new Error(result.message || '获取活动数据失败')
    }
  } catch (error) {
    console.error('获取活动数据失败:', error)
    throw error
  }
}

// 搜索附近活动（通过后端代理）
export async function searchNearbyActivities(latitude, longitude, radius = 1000, keyword = '') {
  try {
    const params = new URLSearchParams({
      latitude: latitude.toString(),
      longitude: longitude.toString(),
      radius: radius.toString(),
      keyword: keyword
    });
    
    const result = await request(`/api/tencent-map/nearby-shops/?${params.toString()}`)
    if (result.success) {
      // 确保返回的数据是数组
      return Array.isArray(result.data) ? result.data : [];
    } else {
      throw new Error(result.message || '搜索附近活动失败')
    }
  } catch (error) {
    console.error('搜索附近活动失败:', error)
    throw error
  }
}

// 位置搜索功能
export async function searchPlaces(keyword, latitude = '', longitude = '', radius = 1000) {
  try {
    // 构建查询参数
    const params = new URLSearchParams();
    if (keyword) params.append('keyword', keyword);
    if (latitude) params.append('latitude', latitude);
    if (longitude) params.append('longitude', longitude);
    if (radius) params.append('radius', radius.toString());
    
    // 使用公共搜索API，不需要登录
    const response = await fetch(`/api/tencent-map/nearby-shops/?${params.toString()}`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
        'X-CSRFToken': getCSRFToken()
      },
      credentials: 'include'
    });

    // 检查响应的内容类型
    const contentType = response.headers.get('content-type');
    if (!contentType || !contentType.includes('application/json')) {
      // 如果响应不是JSON格式，可能是服务器错误
      const text = await response.text();
      console.error('收到非JSON响应:', text.substring(0, 200) + '...');
      throw new Error('服务器返回了非JSON响应');
    }

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    const result = await response.json();
    
    if (result.success) {
      // 确保返回的数据是数组
      return Array.isArray(result.data) ? result.data : [];
    } else {
      throw new Error(result.message || '搜索失败');
    }
  } catch (error) {
    console.error('位置搜索失败:', error);
    throw error;
  }
}

export default {
  getActivities,
  searchNearbyActivities,
  searchPlaces
}